x2APIC/VT-d: improve interrupt remapping and queued invalidation enabling and disabling
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 5 Jul 2010 07:30:25 +0000 (08:30 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 5 Jul 2010 07:30:25 +0000 (08:30 +0100)
commit19fbbfffdc2e8ad2c20f577e2a3e9b46a8a9e1da
treebdd64cff52b3d052a30da8bd9609caf4de8e8a3f
parent600814950bcbc535c39e8fe9501677e2a926f78b
x2APIC/VT-d: improve interrupt remapping and queued invalidation enabling and disabling

x2APIC depends on interrupt remapping, so interrupt remapping needs to
be enabled before x2APIC. Usually x2APIC is not enabled
(x2apic_enabled=0) when enable interrupt remapping, although x2APIC
will be enabled later. So it needs to pass a parameter to set
interrupt mode in intremap_enable, instead of checking
x2apic_enable. This patch adds a parameter "eim" to intremap_enable to
achieve it.  Interrupt remapping and queued invalidation are already
enabled when enable x2apic, so it needn't to enable them again when
setup iommu. This patch checks if interrupt remapping and queued
invalidation are already enable or not, and won't enable them if
already enabled. It does the similar in disabling, that's to say don't
disable them if already disabled.

Signed-off-by: Weidong Han <weidong.han@intel.com>
xen/drivers/passthrough/vtd/extern.h
xen/drivers/passthrough/vtd/intremap.c
xen/drivers/passthrough/vtd/iommu.c
xen/drivers/passthrough/vtd/qinval.c